import { defineStore } from 'pinia'
import axios from 'axios'

import { watch, ref, reactive } from 'vue'
// 这个插件是解析歌词的
import { parseLrc, parseYrc } from '@lrc-player/parse'
import { randomNum, Yrc } from '@renderer/utils'

/* // 解析Lrc歌词的插件
import Lyric from 'lrc-file-parser'
var mylrc = new Lyric({
  onPlay: function (line, text) {
    console.log(line, text)
  },
  onSetLyric: function (lines) {
    // listening lyrics seting event
    console.log(lines) // lines is array of all lyric text
  },
  offset: 150, // offset time(ms), default is 150 ms
  playbackRate: 1, // playback rate, default is 1
  isRemoveBlankLine: true // is remove blank line, default is true
})

// var extendedLyricStrs = [lrcText] //
mylrc.setLyric(lrcText) //设置歌词，lyricStr 是歌词文件的文本内容，extendedLyricStrs 是扩展歌词文件的文本数组（可选）
// 注意：设置歌词将自动暂停歌词播放
mylrc.play(30000) // 播放歌词，当前播放时长为 30000 秒，单位：毫秒
// mylrc.pause() // 暂停歌词播放
// mylrc.setPlaybackRate(1.2) // 设置播放速率为 1.2 倍 */

// export type Lyric = { time: number | boolean; text: string; line: number }
export type LyricType = { time: number | boolean; text: string }

// 会把用户当前正在播放的列表单独存储起来，以便切换歌单时没有播放切换的歌单不会被清空
export const useMusicStore = defineStore('useMusicStore', () => {
  console.log('import.meta.env.VITE_BASE_URL', import.meta.env)

  const state = reactive<CurrentPlaySong>({
    // musicUrl: `/src/assets/audio/我在你眼里到底算什么 (DJR7版) - 王恰恰.mp3`, // 用户当前播放器播放的音乐url
    songs: {
      id: '',
      musicUrl: '', // 音乐url
      title: '', // 标题
      artist: '', // 艺术家(作者)
      album: '', // 专辑名称
      genre: [], // 流派
      duration: 0, // 音乐时长
      bitrate: 0, // 码率
      sampleRate: 0, // 采样率
      codec: '', // 编码格式
      cover: {
        url: '', // 封面url
        base64: '', // 封面base64
        mimeType: '', // 封面类型size
        size: 0 // 封面大小
      } // 封面
    }, // 用户当前播放器播放的音乐
    currentItem: null, // 用户当前选中的歌单列表，会随着用户选中的菜单变化
    runtimeList: null, // 用户当前正在播放音乐的列表

    lyric: [],
    klyric: '',
    currentTime: 0,
    lrcMode: 1,
    bgColor: [], // 当前正在播放的音乐主题色
    isPlay: false // 是否正在播放
  })
  const index = ref(0)
  const lastIndexList = ref<number[]>([])
  watch(index, (value, oldValue) => {
    lastIndexList.value.push(oldValue)
  })

  const setIsPlay = (status: boolean) => {
    state.isPlay = status
  }

  // 设置当前播放的音乐
  const setCurrentPlaySong = async (metadata: any) => {
    try {
      // debugger

      // 音乐id
      state.songs.id = (metadata.id || '').toString()

      state.songs.musicUrl = metadata.pathSong

      state.songs.title = metadata.title || ''
      // 艺术家(作者)
      state.songs.artist = metadata.artist || ''
      // 专辑
      state.songs.album = metadata.album || ''
      // 流派
      state.songs.genre = metadata.genre || []
      // 时长
      state.songs.duration = metadata.duration || 0
      // 码率
      state.songs.bitrate = metadata.bitrate || 0
      // 采样率
      state.songs.sampleRate = metadata.sampleRate || 0
      // 编码格式
      state.songs.codec = metadata.codec || ''

      // 封面

      state.songs.cover.url = metadata.pathCover

      const lyricText = await axios.get(metadata.pathLyrics).then((res) => res.data || '')
      // debugger
      // 处理歌词 state.lyric
      // state.lyric = metadata.neteaseLyric
      state.lyric = await window.electron.lrcToNetease(lyricText)

      console.log('歌词解析成功', state.lyric)
      state.lrcMode = 0 // 0逐行解析 1逐字解析

      console.log('当前加载的音乐', state)
    } catch (e) {
      console.log('getMusicUrlHandler函数错误：', e)
    }
  }
  // 更新当前播放的音乐的主题色
  const updateBgColor = (colors: Array<Array<string>>) => {
    state.bgColor = colors
  }
  // 更新当前播放的音乐的信息
  const updateCurrentItem = (val: any) => {
    val.name = val.specialType === 5 ? '我喜欢的歌单' : val.name
    state.currentItem = val
  }

  return {
    state,
    setCurrentPlaySong,
    setIsPlay,
    updateBgColor,
    updateCurrentItem
  }
})
